1. Technical Field
The present invention relates to a system and method that minimizes retry delays in high traffic computer networks. More particularly, the present invention relates to a system and method that modifies sequence numbers used to request a new session so that the modified sequence number is greater than a previous sequence number.
2. Description of the Related Art
Many computer systems used in high-speed networks open and close numerous network connections (sessions) when communicating over a network with a particular computer system. For example, a client computer system may repeatedly open and close sessions with a particular server computer system. In some conditions, as will be described herein, the request for a new session is identified by the server as a packet belonging to the previous session, rather than a new session request.
When this condition occurs, timeouts in the current TCP protocol results in delays and, consequently, poor performance. FIG. 3 depicts a prior art example of this condition occurring and the resulting delays. First computer system 300 and second computer system 301 are shown communicating using a protocol, such as the TCP protocol. First computer system 300 is often a client computer system and second computer system 301 is often a server computer system, however the types of systems involved is irrelevant so long as the first computer system and the second computer system are communicating over a network using a protocol such as the TCP protocol.
First computer system 300 sends request 310 to terminate a previous network session. In the TCP protocol, the termination request is a FIN request. The termination request uses a sequence number that is used for the previous session, and is depicted as “X, in the figures. While “X” is used repeatedly, it will be understood by those skilled in the art that “X” represents a series of sequence numbers that extends from an initial base sequence number. The sequence numbers assist the computer system in determining the order of packets so that a packet that takes more time to travel through the network and arrives out of order is able to be processed correctly. The second computer system responds with packet 320 that acknowledges the terminate request. Again, in the TCP protocol, the termination acknowledgement is a FIN_ACK response. First computer system 300 sends acknowledgement (ACK) packet 325 that acknowledges receipt of the FIN_ACK packet from the second computer system. When the second computer system receives the last ACK, the second computer system enters “time wait” state 340 (TIME_WAIT) that is generally used to clean up any packets from the previous session that was just terminated. The time wait state varies from one system to another. Generally, the TIME_WAIT state is dependent on the operating system being used.
In many situations, first computer system 300 requests a new session with second computer system 301 before the time wait period has expired. This new session request is accomplished when sync (SYN) packet 330 is sent from first computer system 300 to second computer system. The new session request has a different sequence number. The new series of sequence numbers, represented as “Y”, is different from the old series of sequence numbers (X) that was used with the previous session. A common approach to creating the new sequence number (Y) is using a random number generator. If the new sequence number (Y) is less than or equal to the sequence number that was used with the previous session (X), than the second computer system will consider the new request (SYN request 330) to be part of the previous session and not a request to establish a new session. This is represented by decision block 350. If the new sequence number is greater than the previous sequence number, then decision 350 branches to “no” branch 355 whereupon, at step 360, a new session is established using the new sequence number as the base sequence number.
On the other hand, if the new sequence number is less than or equal to the previous sequence number, then decision 350 branches to “yes” branch 365 whereupon the second computer system returns an acknowledgement (ACK) response 370 with the sequence number that was expected (X) and the second computer system does not establish a new session. In traditional systems, the acknowledgement (ACK) is received by the first computer system which responds by (1) sending a reset (RST) request 380 to the second computer system, (2) waiting at least three seconds to ensure that the second computer system's TIME_WAIT state has cleared, and (3) re-requesting the new session by sending sync (SYN) request 390 after the three second period has expired. Note that the second computer system may be configured to allow TIME_WAIT assassination, in which case the TIME_WAIT state is eliminated upon the second computer system's receipt of reset (RST) request 380. As can be seen, with systems that are repeatedly establishing new sessions amongst each other, frequently encountering the three second delay in order to re-request the new session can be quite challenging resulting in reduced network throughput and slower overall system performance.